# 1.暴力摩托程序（完成下列需求）：
# 创建三个游戏人物，分别是：
# 苍井井，女，18，攻击力ad为20，血量200
#  东尼木木，男，20，攻击力ad为30，血量150
#  波多多，女，19，攻击力ad为50，血量80
# 创建三个游戏武器，分别是：
# 平底锅，ad为20
# 斧子，ad为50
# 双节棍，ad为65
# 创建三个游戏摩托车，分别是：
# 小踏板，速度60迈
# 雅马哈，速度80迈
# 宝马，速度120迈。
# 完成下列需求（利用武器打人掉的血量为武器的ad + 人的ad）：
# （1）苍井井骑着小踏板开着60迈的车行驶在赛道上。
# （2）东尼木木骑着宝马开着120迈的车行驶在赛道上。
# （3）波多多骑着雅马哈开着80迈的车行驶在赛道上。
# （4）苍井井赤手空拳打了波多多20滴血，波多多还剩xx血。
# （5）东尼木木赤手空拳打了波多多30滴血，波多多还剩xx血。
# （6）波多多利用平底锅打了苍井井一平底锅，苍井井还剩xx血。
# （7）波多多利用斧子打了东尼木木一斧子，东尼木木还剩xx血。
# （8）苍井井骑着宝马打了骑着小踏板的东尼木木一双节棍，东尼木木哭了，还剩xx血。（选做）
# （9）波多多骑着小踏板打了骑着雅马哈的东尼木木一斧子，东尼木木哭了，还剩xx血。（选做）
'''
class People:

    def __init__(self, name, sex, age, ad, hp,):
        self.name = name
        self.sex = sex
        self.age = age
        self.ad = ad
        self.hp = hp

    def attack(self, b):
        print(f'{self.name}赤手空拳打了{b.name}{self.ad}滴血，{b.name}还剩{b.hp - self.ad}点血')

    def car(self, a):
        print(f'{self.name}骑着{a.name}开着{a.speed}迈的车行驶在赛道上')

class Arms:

    def __init__(self, name, ad):
        self.name = name
        self.ad = ad

    def arms_attack(self, c, d):
        print(f'{c.name}利用{self.name}打了{d.name}一{self.name},{d.name}还剩{d.hp - c.ad - self.ad}')

class Motorcycle:

    def __init__(self, name, speed):
        self.name = name
        self.speed = speed

    def func(self, c, d):
        pass

p1 = People('仓井井', '女', 18, 20, 200)
p2 = People('东尼木木', '男', 20, 30, 150)
p3 = People('波多多', '女', 19, 50, 80)

q1 = Arms('平底锅', 20)
q2 = Arms('斧子', 50)
q3 = Arms('双节棍', 65)

s1 = Motorcycle('小踏板', 60)
s2 = Motorcycle('雅马哈', 80)
s3 = Motorcycle('宝马', 120)

p1.car(s1)
p2.car(s3)
p3.car(s2)
p1.attack(p3)
p2.attack(p1)
q1.arms_attack(p1, p3)
q2.arms_attack(p1, p2)
'''

# 2.定义一个类，计算圆的周长和面积
'''
class Circular:
    pi = 3.14

    def __init__(self, radius):
        self.radius = radius

    def girth(self):
        c = self.radius * self.pi * 2
        print(c)

    def area(self):
        r = self.radius ** 2 * self.pi
        print(r)

p1 = Circular(3)
p1.girth()
p1.area()
'''

# 3.定义一个学校类，一个老师类。
#
# 学校类要求：
# 学校类封装学校名称，学校地址，以及相关老师（以列表形式存放老师对象）的属性。
# name: 学校名称。
# address: 具体地址。
# teacher_list: []。
# 学校类设置添加老师对象的方法。
# 老师类封装姓名，教授学科，以及所属学校的具体对象。
# name: 老师名。
# course: 学科。
# school: 具体学校对象。
# 实例化2个校区：
# 北京校区，美丽的沙河；
# 深圳校区，南山区。
# 实例化6个老师：
# 太白，Python, 北京校区对象。
# 吴超，linux, 北京校区对象。
# 宝元，Python, 北京校区对象。
# 苑昊，python, 深圳校区对象。
# 小虎，linux, 深圳校区对象。
# 小王，Python，深圳校区对象。
# 完成以下具体需求：
# 获取宝元所属学校名称。
# 获取宝元所属学校的学校地址。
# 将所有属于北京校区的所有老师名展示出来，并添加到一个列表中。
# 将所有属于深圳校区的所有老师以及所负责的学科展示出来。
# 将两个校区的负责Python学科的所有老师对象添加到一个列表中。
# 将两个校区的负责linux学科的所有老师对象添加到一个列表中并循环展示出来。
# 将北京校区这个对象利用pickle写入文件中，然后读取出来，并展示出所属于北京校区的老师姓名
'''
class School:

    def __init__(self, name, address):
        self.name = name
        self.address = address
        self.teacher_list = []

    def recruit(self, teacher):
        self.teacher_list.append(teacher)
        # teacher.school = self

class Teacher:

    def __init__(self, name, course, school):
        self.name = name
        self.course = course
        self.school = school
        self.school.recruit(self)

bj = School("北京校区","美丽的沙河")
sz = School("深圳校区", "南山区")

taibai = Teacher("太白", "python", bj)
wuchao= Teacher("吴超", "linux", bj)
baoyuan = Teacher("宝元", "python", bj)
yuanhao = Teacher("苑昊", "python", sz)
xiaohu = Teacher("小虎", "linux", sz)
xiaowang = Teacher("小王", "python", sz)

print(taibai.school.name)

print(taibai.school.address)

lst = []
for i in bj.teacher_list:
    print(i.name)
    lst.append(i.name)
print(lst)

for i in sz.teacher_list:
    print(F"{i.name}负责{i.course}")

lst1 = []
for i in bj.teacher_list:
    if i.course == 'python':
        lst1.append(i.name)
for i in sz.teacher_list:
    if i.course == 'python':
        lst1.append(i.name)
print(lst1)

lst2 = []
for i in bj.teacher_list:
    if i.course == 'linux':
        lst2.append(i.name)
for i in sz.teacher_list:
    if i.course == 'linux':
        lst2.append(i.name)
for i in lst2:
    print(i)
'''
